package br.unicamp.ic.inf300.arena.modelo.vendas.servico;

import java.util.Collection;

import br.unicamp.ic.inf300.arena.modelo.vendas.Bilhete;
import br.unicamp.ic.inf300.arena.modelo.vendas.Venda;
import br.unicamp.ic.inf300.arena.modelo.vendas.Pagamento;

public interface ITransacaoVendaServico {

	/**
	 * - Popula objetos que colaboram na realizacao de uma venda de bilhetes e efetiva transacao de
	 * venda na base de dados de maneira transacional.
	 * 
	 * - Calcula total a pagar.
	 * 
	 * - Efetua pagamento para Arena via modulo externo, Pagtos. online.
	 * 
	 * OBSERVACAO:<br>
	 *
	 * 	num. cartao fixo da conta contabil da Arena (conta contabil padrao para todas unid. negocio)
	 * strNumCartaoBeneficiado = "1234567"
	 * 
	 * @param bilhetes
	 * @param pagamento
	 * 
	 * @return Venda
	 */
	Venda efetivarTransacao(Collection<Bilhete> bilhetes, Pagamento pagamento)
			throws Exception;
}